package br.edu.fapi.gestao.pg.controlador;

import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import br.edu.fapi.gestao.pg.dominio.Convenio;
import br.edu.fapi.gestao.pg.dominio.Curso;
import br.edu.fapi.gestao.pg.dominio.Telessala;
import br.edu.fapi.gestao.pg.repositorio.RepositorioConvenioImpl;
import br.edu.fapi.gestao.pg.repositorio.RepositorioCursoImpl;
import br.edu.fapi.gestao.pg.repositorio.RepositorioTelessalaImpl;

@ManagedBean
public class Opa implements Serializable {

	private static final long serialVersionUID = 1L;

	private RepositorioCursoImpl repositorioCurso;
	
	private RepositorioConvenioImpl repositorioConvenio;
	
	private RepositorioTelessalaImpl repositorioTelessala;
	
	public String getCurso() {
		return curso;
	}

	public void setCurso(String curso) {
		this.curso = curso;
	}

	public Map<String, Integer> getCursos() {
		return cursos;
	}

	public void setCursos(Map<String, Integer> cursos) {
		this.cursos = cursos;
	}

	private String convenio;

	private String telessala;
	
	private String curso;

	private Map<String, Integer> cursos = new HashMap<String, Integer>();
	private Map<String, Integer> convenios = new HashMap<String, Integer>();
	private Map<String, Integer> telessalas = new HashMap<String, Integer>();

	private FacesContext context;
	
	public Opa() {
		context = FacesContext.getCurrentInstance();
		repositorioCurso = context.getApplication().evaluateExpressionGet(context, "#{repositorioCurso}", RepositorioCursoImpl.class);
		repositorioConvenio = context.getApplication().evaluateExpressionGet(context, "#{repositorioConvenio}", RepositorioConvenioImpl.class);
		repositorioTelessala = context.getApplication().evaluateExpressionGet(context, "#{repositorioTelessala}", RepositorioTelessalaImpl.class);
		List<Curso> listaCursos = repositorioCurso.listarCursos();
		for(Curso curso : listaCursos){
			cursos.put(curso.getCurso(), curso.getId());
		}
		List<Convenio> listaConvenios = repositorioConvenio.listarConvenios();
		for(Convenio convenio : listaConvenios){
			convenios.put(convenio.getNome(), 1);
		}
	}

	public String getConvenio() {
		return convenio;
	}

	public void setConvenio(String convenio) {
		this.convenio = convenio;
	}

	public String getTelessala() {
		return telessala;
	}

	public void setTelessala(String telessala) {
		this.telessala = telessala;
	}

	public Map<String, Integer> getConvenios() {
		return convenios;
	}

	public void setConvenios(Map<String, Integer> convenios) {
		this.convenios = convenios;
	}

	public Map<String, Integer> getTelessalas() {
		return telessalas;
	}

	public void setTelessalas(Map<String, Integer> telessalas) {
		this.telessalas = telessalas;
	}

	public void tratarTrocaConvenio() {
		List<Telessala> listaTelessalas = repositorioTelessala.listarTelessalas();
		for(Telessala telessala : listaTelessalas){
			telessalas.put(telessala.getLocal(), 1);
		}
	}

	 public String redirecionarFileUpload(){
		 return "/paginas/welcome.xhtml?curso="+curso+"&convenio="+convenio+"&telessala="+telessala;
	 }

	
}
